package zp.demo.apitest.listener.apiconfig;


import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;


@Data
@ConfigurationProperties(prefix = "api")
@Valid
public class ApiProperties {

    /**
     * 版本匹配正则 与获取正则，必须满足捕获组1为版本信息 ,默认值为.+(v\d+)$
     */
    @NotNull(message = "版本正则不能为空")
    Pattern versionMatch =Pattern.compile(".+(v\\d+)$") ;


    /**
     * 不参与映射的接口
     */
    Set<String>  exclude = Collections.emptySet();

    /**
     * 仅扫描指定路径
     */
    Set<String> only = Collections.emptySet();


    /**
     * 解析得到的api信息列表
     */
    List<ApiListener.ApiInfo> apiInfos;

    protected void setApiInfos(List<ApiListener.ApiInfo> apiInfos )
    {
        this.apiInfos = apiInfos;
    }

    public List<ApiListener.ApiInfo> getApiInfos()
    {
        return Collections.unmodifiableList(apiInfos);

    }
}
